iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0
Modern Web

PHP框架-Symfony4 + api platform 系列 第 23

Day#23 用參數取得路徑,版本4.3↑及4.3↓權限控管用法,實體類型別問題~真的是各種雷阿...(((゚Д゚;)))

  • 分享至 

  • xImage
  •  

除了在取得IRI時, API 網址前面的domain不可以寫死外,
其他網址當然也不能寫死阿.. 網址不能寫死!!!!!這很重要R~
第二十一篇的時候有說明在取得IRI時,網址不寫死的方法 ,
那如果是一般我們要取得某個目錄內的東西呢!!!?


解答就是利用我們前面所提到的參數設定 => parameter

將自己要的路徑寫成參數 ,不僅不會寫死 ,要改路徑的時候還只需要改一次就好

我們的檔案通常,會放在根目錄下 , 以下是取得根目錄的function

$this->params->get('kernel.project_dir')

還記得怎麼取得參數嗎 .. 就是透過ParameterBagInterface 的get,把參數名稱丟進去來取得

前一陣子在看兩個專案,因為版本有那麼一點點差距,
雖然都是4 , 但一個是4.3↑ 另一個是4.3↓,發現在權限控管的時候用法好像不太一樣....
在4.3以前可以使用has_role() 和 is_granted() 這兩種 , 4.3以後 has_role 被不建議使用了 ,
雖然說不建議使用但還是可以用啦XD ,只是未來如果被不建議使用的東西,官方可能不會去作修正 ,
像是3升4版的時候,也有一堆被不建議使用...那時候專案在upgrade的時候,
小菜鳥我還一一把不建議使用的東西換成可以用的....
不然每次看到黃黃的deprecated就很煩燥(╯‵□′)╯︵┴─┴

最近還有碰上一個問題,就是在實體類建立property的時候,
如果我們給了type ,例如給了int or string ,但是沒有給nullable為true就產生get和set的話 ,
它自動幫我們升成的型別 , 就會直接給我們設定的type,不會自動幫我們補上null ,
所以當該欄位資料有空的時候, 就會500error給我們看

解決方法有兩種

1.把get和set整個砍掉!!! 在property上加上nullable=true , 然後重新生成get和set

2.自己補上nullabel=true跟 在get和set的型態前上補上問號 , ? 代表是null的意思

 public function getEmail(): ?string
    {
        return $this->email;
    }

    public function setEmail(?string $email): self
    {
        $this->email = $email;

        return $this;
    }

但是記得,get和set都要加上哦!! set是加在()裡 , get 是在加外面

這樣一來資料有空的的話,Server就不會森77了(๑´ڡ`๑)

下一篇 , 來分享一下一個超好用的東西 => workflow流程引擎

雖然說講起來會稍微複雜點 , 但真的好用 !


上一篇
Day#22 淺談作用域,存取權 ,及 Request取值的兩種方法~
下一篇
Day#24 Workflow 流程引擎 ~
系列文
PHP框架-Symfony4 + api platform 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言